package burubaka.controller.mnt;

import java.util.logging.Logger;

import org.slim3.controller.Navigation;

import burubaka.BurubakaConstants;
import burubaka.common.controller.Controller;
import burubaka.model.RaceInfo;
import burubaka.service.RaceInfoService;

public class RaceProgressController extends Controller {

	private static final Logger log = Logger.getLogger(RaceProgressController.class.getName());
	private RaceInfoService raceInfoService = new RaceInfoService();

	/**
	 * 延長
	 * 
	 * @return
	 * @throws Exception
	 */
	public Navigation extend() throws Exception {
		registRaceInfo(BurubakaConstants.PROGRESS_CLOSING_EXTEND);
		return forward("/mnt");
	}

	/**
	 * 解除
	 * 
	 * @return
	 * @throws Exception
	 */
	public Navigation release() throws Exception {
		registRaceInfo(BurubakaConstants.PROGRESS_RACECARD);
		return forward("/mnt");
	}

	/**
	 * 終了
	 * 
	 * @return
	 * @throws Exception
	 */
	public Navigation end() throws Exception {
		registRaceInfo(BurubakaConstants.PROGRESS_END);
		return forward("/mnt");
	}

	/**
	 * レース情報登録
	 * 
	 * @param progress
	 */
	private void registRaceInfo(int progress) {
		RaceInfo raceInfo = raceInfoService.getCurrentRaceInfo();

		// すでにレース情報が登録されているかどうか判断
		// まだ登録されていない場合は何もしない
		if (raceInfo == null) {
			return;
		}

		// レース情報更新
		raceInfo.setProgress(progress);
		raceInfoService.regist(raceInfo);
	}

}
